grammar Expr3;

options { output=AST; }
tokens {
	DOC='doc';
	TITLE='title';
	SHIT='expr';
}

@header {package hero.antlr;} 

@lexer::header{package hero.antlr;}

expr:   atom1 (('+'|'-') atom2)*  NEWLINE -> ^('expr' atom1) ;

atom2: INT
    | ID
    | '(' expr ')'
    ;

atom1: INT
    | ID
    | '(' expr ')'
    ;

ID  :   ('a'..'z'|'A'..'Z')+ ;
INT :   '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS  :   (' '|'\t')+ {skip();} ;
